Content delivery networks (CDNs) provide content, such as video content, to users. The CDNs typically employ a hierarchy of computer servers, with an origin server that originally supplies the content, and a hierarchy of proxying servers, caching servers or both organized hierarchically below the origin server to help distribute the content and reduce the load on the origin server.
When a user requests content, such as a particular video, the user's client device (e.g., computer, cell phone, internet-enabled television set) may transmit a request for a fragment of the user-requested content, such as a two-second video fragment, to a proxy server using Hypertext Transfer Protocol (HTTP). The proxy server can provide the fragment if it is available, and if it is not, the proxy server can transmit a request to another proxy server that is higher up in the content's hierarchy, and the process can repeat further up the hierarchy until a server having the requested fragment is reached (or until the source is reached). When the proxy server receives the fragment from the higher level server, the proxy server waits until it possesses the entire content fragment before transmitting data to the client device. This process repeats until all fragments of the user-requested content have been received by the client device.
Content requests are often associated with a timeout, a specified period of time that is allowed to elapse before the request is to be retransmitted or abandoned if none of the requested content has been received. When the user requests high bit rate content, such as a high-definition television content, the request may timeout if the proxy server cannot cache and then deliver the requested content in time. In response to the request timeout, the client device may abandon the request or transmit a redundant request for the content, often at a lower bit rate, which can result in network overload and other bandwidth inefficiencies. In either case, the user's viewing experience is negatively impacted by lower quality content, or no content at all, being delivered to the user's device. In the context of CDNs, where multiple servers are used to deliver content, these inefficiencies are escalated because servers at each level of the CDN hierarchy may be respectively transmitting multiple requests for the same content as a result of timeout.
Accordingly, there remains an ever-present need to improve the delivery of content, and to balance that need with the strains on the network.